////////////////////////////////////////////////////////////////////
//                                                                //
//   Header File : codec.h                                        //
//   Author : Joe Zheng(Jaredz@163.com)                           //
//   Create : 2010-01-18                                          //
//   Update :                                                     //
//                                                                //
////////////////////////////////////////////////////////////////////

#ifndef __CODEC_H__
#define __CODEC_H__

//////////////////////////////////////////////////////////////////////////
// CMD5Codec
class CMD5Codec
{
public:
	// return encode byte count
	// -1 error
	// string --> MD5, pDstBuf length >= LTM_MD5NUM
	static int  Encode(PCTSTR pSrcBuf, PBYTE pDstBuf);
	// string --> MD5 string, pDstBuf length >= LTM_MD5STR
	static int  Encode(PCTSTR pSrcBuf, PTSTR pDstBuf);
	// mem data --> MD5, pDstBuf length >= LTM_MD5NUM
	static bool Encode(PBYTE  pSrcBuf, UINT uSize, PBYTE pDstBuf);
	// mem data --> MD5 string, pDstBuf length >= LTM_MD5STR
	static bool Encode(PBYTE  pSrcBuf, UINT uSize, PTSTR pDstBuf);
private:
	CMD5Codec(void);
	~CMD5Codec(void);
	CMD5Codec(const CMD5Codec&);
	CMD5Codec& operator=(const CMD5Codec&);
};

#endif // __CODEC_H__